from fastapi import APIRouter, status, Depends
from sqlalchemy.orm import Session
from . import schemas, models
from .database import get_db
from .utils import hash_pass

router = APIRouter()


@router.post(
    '/user',
    status_code=status.HTTP_201_CREATED,
    response_model=schemas.UserOutput
)
def create_user(user: schemas.CreateUser, db: Session = Depends(get_db)):
    # 使用utils模块的hash_pass函数对用户密码进行哈希化
    hashed_password = hash_pass(user.password)

    # 替换用户对象中的明文密码为哈希值
    user.password = hashed_password

    # 基于用户提供的数据，创建新的用户模型实例
    new_user = models.User(**user.dict())

    # 将新用户对象添加到数据库会话中，并提交更改
    db.add(new_user)
    db.commit()

    # 刷新数据库会话，以获取新创建的用户对象
    db.refresh(new_user)

    # 返回新创建的用户对象
    return new_user
